#ifndef _LANG_H_
#define _LANG_H_

#include <vector>
#include <string>
namespace lang
{

class Lang
{
public:
	static std::string	ConvertWtoA(const std::wstring& wstr);
	static std::wstring  ConvertAtoW(const std::string& str);
//	void				 BreakString(const std::wstring& wstr, std::vector<std::wstring> Result);

	static std::string			Format(const char*  _Msg, ...);

	static std::string			FormatCommaNumber(int i, char separator = ',', int grouping = 3);
	static std::string			FormatNumber(int i, bool comma = false);
	static std::string			FormatTimeNumber(float f);

	static std::wstring			CombineLocStringA(const std::string& strA, const std::string& strB, bool AddSpace = true);
	static std::string			ConvertStringToLoc(const std::string& str, bool EnforceLOCFormat = true);
	static std::wstring			CreateParamStringA(const std::string& LocStr, int ParamC, ...);
	static std::wstring			CreateParamStringW(const std::string& LocStr, int ParamC, ...);

	static std::string			FormatTimeMMSS(int Time);
	static std::string			FormatTimeHHMMSS(int Time);
	static std::string			FormatDashNumber(int Num);


	enum NEGATIVE_FORMAT
	{
		NF_NEGATIVE_IN_FRONT = 0,
		NF_NEGATIVE_AT_BACK,
		NF_NEGATIVE_IN_BRACKETS,
	};
	static NEGATIVE_FORMAT		NegativeFormat;
	static const std::string	INVALID_LOC_STRING;

	static std::string				TrimTrailing(const std::string str);
	static std::string				TrimLeading(const std::string str);
	static std::vector<std::string> Tokenize(const std::string& str,const std::string& delimiters,
											 bool Trim = true);
};

} // namespace lang


#endif // _LANG_H_